package com.kucai.yifaqapp.model.network;

import com.kucai.yifaqapp.model.network.entity.res.AppVersionInfo;
import com.kucai.yifaqapp.model.network.entity.res.Game_ListBean;
import com.kucai.yifaqapp.model.network.entity.res.MsgBoxBean;
import com.kucai.yifaqapp.model.network.entity.res.NotecountDetail;
import com.kucai.yifaqapp.model.network.entity.res.NotecountDetailBean;
import com.kucai.yifaqapp.model.network.entity.res.Pay_BANKLISTBEAN;
import com.kucai.yifaqapp.model.network.entity.res.Pay_BIndCardReslut;
import com.kucai.yifaqapp.model.network.entity.res.Pay_BanKConformBean;
import com.kucai.yifaqapp.model.network.entity.res.Pay_BankCard;
import com.kucai.yifaqapp.model.network.entity.res.Pay_CunKuanList;
import com.kucai.yifaqapp.model.network.entity.res.Pay_CurrentTimeBean;
import com.kucai.yifaqapp.model.network.entity.res.Pay_CzListBean;
import com.kucai.yifaqapp.model.network.entity.res.Pay_DanYICZBean;
import com.kucai.yifaqapp.model.network.entity.res.Pay_QukuanList;
import com.kucai.yifaqapp.model.network.entity.res.Pay_SingleCzBean;
import com.kucai.yifaqapp.model.network.entity.res.Rekuaisufeiting;
import com.kucai.yifaqapp.model.network.entity.res.Rekuaisusaiche;
import com.kucai.yifaqapp.model.network.entity.res.Res11xuan5;
import com.kucai.yifaqapp.model.network.entity.res.ResActivity;
import com.kucai.yifaqapp.model.network.entity.res.ResActivitys;
import com.kucai.yifaqapp.model.network.entity.res.ResAdduser;
import com.kucai.yifaqapp.model.network.entity.res.ResBanner;
import com.kucai.yifaqapp.model.network.entity.res.ResCode;
import com.kucai.yifaqapp.model.network.entity.res.ResCording;
import com.kucai.yifaqapp.model.network.entity.res.ResCording1;
import com.kucai.yifaqapp.model.network.entity.res.ResGameDetails;
import com.kucai.yifaqapp.model.network.entity.res.ResGuanfang;
import com.kucai.yifaqapp.model.network.entity.res.ResGuanfang2;
import com.kucai.yifaqapp.model.network.entity.res.ResIdear;
import com.kucai.yifaqapp.model.network.entity.res.ResIdearlist;
import com.kucai.yifaqapp.model.network.entity.res.ResIdearlists;
import com.kucai.yifaqapp.model.network.entity.res.ResKaiyuanGame;
import com.kucai.yifaqapp.model.network.entity.res.ResLogin;
import com.kucai.yifaqapp.model.network.entity.res.ResLong;
import com.kucai.yifaqapp.model.network.entity.res.ResLottery;
import com.kucai.yifaqapp.model.network.entity.res.ResLottery1;
import com.kucai.yifaqapp.model.network.entity.res.ResLuzhu;
import com.kucai.yifaqapp.model.network.entity.res.ResMoney;
import com.kucai.yifaqapp.model.network.entity.res.ResNote;
import com.kucai.yifaqapp.model.network.entity.res.ResNotices;
import com.kucai.yifaqapp.model.network.entity.res.ResNow;
import com.kucai.yifaqapp.model.network.entity.res.ResSanfen;
import com.kucai.yifaqapp.model.network.entity.res.ResSetbet;
import com.kucai.yifaqapp.model.network.entity.res.ResUserTable;
import com.kucai.yifaqapp.model.network.entity.res.Resanhuikuaisan;
import com.kucai.yifaqapp.model.network.entity.res.Resbeijingsaiche;
import com.kucai.yifaqapp.model.network.entity.res.Reschongqingshishicai;
import com.kucai.yifaqapp.model.network.entity.res.Resdraw;
import com.kucai.yifaqapp.model.network.entity.res.Resfeiting;
import com.kucai.yifaqapp.model.network.entity.res.Resgansuk3;
import com.kucai.yifaqapp.model.network.entity.res.Resgetuser;
import com.kucai.yifaqapp.model.network.entity.res.Resguangxik3;
import com.kucai.yifaqapp.model.network.entity.res.Resguizhouk3;
import com.kucai.yifaqapp.model.network.entity.res.Reshebeik3;
import com.kucai.yifaqapp.model.network.entity.res.Reshubeik3;
import com.kucai.yifaqapp.model.network.entity.res.Resjiangsuk3;
import com.kucai.yifaqapp.model.network.entity.res.Resjsliuhecai;
import com.kucai.yifaqapp.model.network.entity.res.Reskuaile10fen;
import com.kucai.yifaqapp.model.network.entity.res.Reskuaile8;
import com.kucai.yifaqapp.model.network.entity.res.Reskuailefeiting;
import com.kucai.yifaqapp.model.network.entity.res.Reskuailefenfencai;
import com.kucai.yifaqapp.model.network.entity.res.Reskuailesaiche;
import com.kucai.yifaqapp.model.network.entity.res.Resmiaosukuaisan;
import com.kucai.yifaqapp.model.network.entity.res.Resmiaosuniuniu;
import com.kucai.yifaqapp.model.network.entity.res.Resmiaosusaiche;
import com.kucai.yifaqapp.model.network.entity.res.Resmiaosushishicai;
import com.kucai.yifaqapp.model.network.entity.res.Respaoma;
import com.kucai.yifaqapp.model.network.entity.res.Respcdandan;
import com.kucai.yifaqapp.model.network.entity.res.Respk10niu;
import com.kucai.yifaqapp.model.network.entity.res.Resqqfenfencai;
import com.kucai.yifaqapp.model.network.entity.res.Resregister;
import com.kucai.yifaqapp.model.network.entity.res.Ressanfenhecai;
import com.kucai.yifaqapp.model.network.entity.res.Ressanfenssc;
import com.kucai.yifaqapp.model.network.entity.res.Restengxunfenfencai;
import com.kucai.yifaqapp.model.network.entity.res.Resxgliuhecai;
import com.kucai.yifaqapp.model.network.entity.res.Resxingyunfeiting;
import com.kucai.yifaqapp.model.network.entity.res.Resxingyunnongchang;
import com.kucai.yifaqapp.model.network.entity.res.Resxinjiangshishicai;
import com.kucai.yifaqapp.model.network.entity.res.Resxyfeiting;
import com.kucai.yifaqapp.model.network.entity.res.Resxyliuhecai;
import com.kucai.yifaqapp.model.network.entity.res.changeNikeNameBean;
import com.kucai.yifaqapp.model.network.entity.res.exchangeBena;
import com.kucai.yifaqapp.model.network.entity.res.getHongbaoBean;
import com.kucai.yifaqapp.model.network.entity.res.update_PwdBean;
import com.kucai.yifaqapp.model.network.entity.res.urlListBean;
import com.kucai.yifaqapp.model.network.entity.res.websocktdizhiBena;
import com.kucai.yifaqapp.model.network.entity.res.z_user_MsgBean;

import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.Url;

/**
 * 网络json请求Api
 */
public interface HttpJsonApi {

    //验证码
    @GET
    Observable<ResCode> getcode(@Url String url);

    //验证码
    @POST
    Observable<ResUserTable> getusertable(@Url String url, @Query("token") String token, @Query("startTime") String startTime, @Query("endTime") String endTime);

    //会员管理
    @POST
    Observable<Resgetuser> getmyuser(@Url String url, @Query("token") String token,
                                     @Query("username") String username,
                                     @Query("page") String page,
                                     @Query("row") String row);

    //添加会员
    @POST
    Observable<ResAdduser> adduser(@Url String url, @Query("token") String token,
                                   @Query("userName") String userName,
                                   @Query("password") String password,
                                   @Query("fullName") String fullName,
                                   @Query("phone") String phone,
                                   @Query("qq") String qq,
                                   @Query("code") String code,
                                   @Query("captcha_code") String captcha_code);


    //注册 peuser, password, realname, phone, username, codes, code);
    @POST
    Observable<Resregister> register(@Url String url, @Query("userName") String peuser,
                                     @Query("password") String password,
                                     @Query("fullName") String realname,
                                     @Query("contact") String phone,
                                     @Query("superUserName") String username,
                                     @Query("captcha_code") String codes,
                                     @Query("code") String code
//            ,
//                                     @Query("source") String source
    );

    //登录
    @POST
    Observable<ResLogin> login(@Url String url, @Query("username") String peuser,
                               @Query("password") String password
//            ,
//                               @Query("source") String source
    );


    //获取首页banner
    @GET
    Observable<urlListBean> getUrlList(@Url String url);

    //查询用户信息
    @POST
    Observable<ResLogin> finduser(@Url String url, @Query("token") String token);

    //试玩登录
    @POST
    Observable<ResLogin> demologin(@Url String url);

    //获取首页banner
    @GET
    Observable<ResBanner> getbanner(@Url String url);

    //登录成功分级弹框
    @GET
    Observable<ResNotices> getNotices(@Url String url,
                                      @Query("token") String token,
                                      @Query("page") String page,
                                      @Query("rows") String rows);

    //获取首页活动（大赢家）
    @GET
    Observable<ResActivity> getactivity(
//            @Query("source") String source
            @Url String url
    );


    //获取首页活动详情（大赢家）
    @GET
    Observable<ResActivitys> getactivitys(@Url String url, @Query("id") int id,
                                          @Query("imgid") int token
//            ,
//                                          @Query("source") String source
    );

    //获取首页活动详情（官方）
    @GET
    Observable<ResGuanfang> getguanfangactivitys(@Url String url, @Query("id") String id,
                                                 @Query("imgid") String imgid,
                                                 @Query("token") String token
//            ,
//                                                 @Query("source") String source
    );

    //获取首页活动详情（官方）
    @GET
    Observable<ResGuanfang2> getguanfangactivitys2(@Url String url, @Query("id") String id,
                                                   @Query("imgid") String imgid,
                                                   @Query("token") String token
//            ,@Query("source") String source
    );


    //获取首页活动抽奖
    @GET
    Observable<Resdraw> getdraw(@Url String url, @Query("id") String id,
                                @Query("token") String token);

    /**
     * ‘token’ =>, //用户token，
     * ‘g_id’ => 15， // 接口id  开元 龙成
     * ‘tag’ => 1,   //接口游戏id
     * ‘doingCode’ => 1， //请求类型 0:登录 1:刷新余额
     */
    @GET
    Observable<ResKaiyuanGame> getkaiyuangame(@Url String url, @Query("token") String token,
                                              @Query("g_id") String g_id,
                                              @Query("tag") String tag,
                                              @Query("doingCode") String doingCode);


    //获取左侧游戏详情
    @GET
    Observable<ResGameDetails> getgamesdetail(@Url String url, @Query("gameId") String gameid
    );

    //获取赔率
    @POST
    Observable<Resmiaosusaiche> getmiaosusaicheoddes(@Url String url, @Query("game_id") String gameid,
                                                     @Query("token") String token);


    //获取快速赛车赔率
    @POST
    Observable<Rekuaisusaiche> getkuaisusaiche(@Url String url, @Query("game_id") String gameid,
                                               @Query("token") String token);

    //获取快速飞艇赔率
    @POST
    Observable<Rekuaisufeiting> getkuaisufeiting(@Url String url, @Query("game_id") String gameid,
                                                 @Query("token") String token);


    @POST
    Observable<Resxingyunfeiting> getxingyunfeiting(@Url String url, @Query("game_id") String gameid,
                                                    @Query("token") String token);

    @POST
    Observable<Resbeijingsaiche> getbeijingsaicheoddes(@Url String url, @Query("game_id") String gameid,
                                                       @Query("token") String token);

    @POST
    Observable<Resxyfeiting> getxingyunfeitingoddes(@Url String url, @Query("game_id") String gameid,
                                                    @Query("token") String token);

    @POST
    Observable<Resfeiting> getkuaitingoddes(@Url String url, @Query("game_id") String gameid,
                                            @Query("token") String token);


    @POST
    Observable<Respaoma> getxianggangpaomaoddes(@Url String url, @Query("game_id") String gameid,
                                                @Query("token") String token);

    @POST
    Observable<ResSanfen> getsanfenodds(@Url String url, @Query("game_id") String gameid,
                                        @Query("token") String token);

    @POST
    Observable<Reskuailesaiche> getkuailesaicheoddes(@Url String url, @Query("game_id") String gameid,
                                                     @Query("token") String token);

    @POST
    Observable<Reskuailefeiting> getkuailefeitingoddes(@Url String url, @Query("game_id") String gameid,
                                                       @Query("token") String token);

    @POST
    Observable<Resmiaosuniuniu> getmiaosuniuniuoddes(@Url String url, @Query("game_id") String gameid,
                                                     @Query("token") String token);


    @POST
    Observable<Respk10niu> getpk10niuoddes(@Url String url, @Query("game_id") String gameid,
                                           @Query("token") String token);

    @POST
    Observable<Resxinjiangshishicai> getxinjiangshishicaioddes(@Url String url, @Query("game_id") String gameid,
                                                               @Query("token") String token);


    @POST
    Observable<Reschongqingshishicai> getchongqingshishicaioddes(@Url String url, @Query("game_id") String gameid,
                                                                 @Query("token") String token);


    @POST
    Observable<Resmiaosushishicai> getmiaosushishicaioddes(@Url String url, @Query("game_id") String gameid,
                                                           @Query("token") String token);

    @POST
    Observable<Resqqfenfencai> getqqfenfencaioddes(@Url String url, @Query("game_id") String gameid,
                                                   @Query("token") String token);

    @POST
    Observable<Reskuailefenfencai> getkuailefenfencaioddes(@Url String url, @Query("game_id") String gameid,
                                                           @Query("token") String token);

    @POST
    Observable<Ressanfenssc> getsanfenssc(@Url String url, @Query("game_id") String gameid,
                                          @Query("token") String token);

    @POST
    Observable<Restengxunfenfencai> gettengxunshishicaioddes(@Url String url, @Query("game_id") String gameid,
                                                             @Query("token") String token);

    @POST
    Observable<Resmiaosukuaisan> getmiaosukuaisanddes(@Url String url, @Query("game_id") String gameid,
                                                      @Query("token") String token);

    @POST
    Observable<Resanhuikuaisan> getanhuikuaisanoddes(@Url String url, @Query("game_id") String gameid,
                                                     @Query("token") String token);

    @POST
    Observable<Resjiangsuk3> getjiangsukuaisanddes(@Url String url, @Query("game_id") String gameid,
                                                   @Query("token") String token);

    @POST
    Observable<Reshubeik3> gethubeikuaisanddes(@Url String url, @Query("game_id") String gameid,
                                               @Query("token") String token);


    @POST
    Observable<Resguangxik3> getguangxikuaisanddes(@Url String url, @Query("game_id") String gameid,
                                                   @Query("token") String token);

    @POST
    Observable<Resgansuk3> getgansukuaisanddes(@Url String url, @Query("game_id") String gameid,
                                               @Query("token") String token);


    @POST
    Observable<Reshebeik3> gethebeikuaisanddes(@Url String url, @Query("game_id") String gameid,
                                               @Query("token") String token);

    @POST
    Observable<Resguizhouk3> getguizhoukuaisanddes(@Url String url, @Query("game_id") String gameid,
                                                   @Query("token") String token);


    @POST
    Observable<Reskuaile8> getkuailebeijing8oddes(@Url String url, @Query("game_id") String gameid,
                                                  @Query("token") String token);

    @POST
    Observable<Respcdandan> getpcdandanoddes(@Url String url, @Query("game_id") String gameid,
                                             @Query("token") String token);

    @POST
    Observable<Reskuaile10fen> getkuaileshifenddes(@Url String url, @Query("game_id") String gameid,
                                                   @Query("token") String token);


    @POST
    Observable<Resxingyunnongchang> getxingyunnongchangddes(@Url String url, @Query("game_id") String gameid,
                                                            @Query("token") String token);

    @POST
    Observable<Res11xuan5> getshiyixuanwuddes(@Url String url, @Query("game_id") String gameid,
                                              @Query("token") String token);


    @POST
    Observable<Resxgliuhecai> getxianggangliuhecaiddes(@Url String url, @Query("game_id") String gameid,
                                                       @Query("token") String token);


    @POST
    Observable<Resxyliuhecai> getxingyunliuhecaiddes(@Url String url, @Query("game_id") String gameid,
                                                     @Query("token") String token);

    @POST
    Observable<Resjsliuhecai> getjisuliuhecaiddes(@Url String url, @Query("game_id") String gameid,
                                                  @Query("token") String token);


    @POST
    Observable<Ressanfenhecai> getsanfenliuhecaiddes(@Url String url, @Query("game_id") String gameid,
                                                     @Query("token") String token);


    @POST
    Observable<ResSetbet> Betbet(@Url String url, @Query("data") String data,
                                 @Query("token") String token);

    //获取账户余额
    @POST
    Observable<ResMoney> getmoney(@Url String url, @Query("token") String token);

    //即时注单
    @GET
    Observable<ResNote> getnote(@Url String url, @Query("token") String token);

    //今日已结page=1&rows=30
    @GET
    Observable<ResNow> getnow(@Url String url, @Query("token") String token,
                              @Query("page") String page,
                              @Query("rows") String rows);

    //下注记录
    @GET
    Observable<ResCording> getrecording(@Url String url, @Query("token") String token,
                                        @Query("startDate") String startDate,
                                        @Query("endDate") String endDate);

    //下注明细
    @GET
    Observable<ResCording1> getrecrd1(@Url String url, @Query("token") String token,
                                      @Query("curDate") String startDate);

    //开奖结果
    @GET
    Observable<ResLottery> getlottery(@Url String url, @Query("date") String token,
                                      @Query("gameId") String gameId,
                                      @Query("page") int page,
                                      @Query("row") String row);

    //开奖结果(大厅);
    @GET
    Observable<ResLottery1> getlottery1(@Url String url, @Query("token") String token);

    //两面长龙
    @GET
    Observable<ResLong> getlong(@Url String url);

    //路珠
    @GET
    Observable<ResLuzhu> getluzhu(@Url String url);

    //获取充值方式列表
    @GET
    Observable<Pay_CzListBean> getCzList(@Url String url, @Query("token") String token);

    //存款记录
    @GET
    Observable<Pay_CunKuanList> getCunKuanList(@Url String url, @Query("token") String token);

    //取款记录
    @GET
    Observable<Pay_QukuanList> getQuKuanList(@Url String url, @Query("token") String token);

    //获取银行卡信息
    @GET
    Observable<Pay_BankCard> getCardNumber(@Url String url, @Query("token") String token);

    //GET_QUKUAN_CONFORM提交取款申请
    @POST
    Observable<Pay_BanKConformBean> getConform(@Url String url, @Query("token") String token,
                                               @Query("amount") String amount,
                                               @Query("fundPwd") String fundPwd,
                                               @Query("fundPwdText") String fundPwdText);

    //获取银行卡列表
    @GET
    Observable<Pay_BANKLISTBEAN> getBankList(@Url String url, @Query("token") String token);

    //绑定银行卡
    @POST
    Observable<Pay_BIndCardReslut> getBandingcard(@Url String url, @Query("token") String token,
                                                  @Query("bank_id") Integer bank_id,
                                                  @Query("cardNo") String cardNo,
                                                  @Query("subAddress") String subAddress);


    //获取单一充值
    @GET
    Observable<Pay_DanYICZBean> getSingleCZ(@Url String url, @Query("rechType") String loginPwd,
                                            @Query("token") String token);

    //获取服务器时间
    @GET
    Observable<Pay_CurrentTimeBean> getTime(@Url String url);

    //线下充值接口
    @POST
    Observable<Pay_SingleCzBean> getSingleCz(@Url String url, @Query("cfgId") String cfgId,
                                             @Query("rechMoney") String rechMoney,
                                             @Query("realName") String realName,
                                             @Query("rechTime") String rechTime,
                                             @Query("token") String token);


    //游戏接口列表
    @GET
    Observable<Game_ListBean> get_game_czlist(@Url String url, @Query("token") String toekn);

    //下分游戏币接口
    @GET
    Observable<exchangeBena> get_game_change(@Url String url, @Query("token") String toekn,
                                             @Query("down_id") int down_id,
                                             @Query("up_id") int up_id,
                                             @Query("money") String money);

    //棋牌游戏余额查询
    @GET
    Observable<exchangeBena> get_qipai_yue(@Url String url, @Query("token") String toekn,
                                           @Query("g_id") int g_id,
                                           @Query("doingCode") int doingCode);

    //获取用户个人资料
    @POST
    Observable<z_user_MsgBean> get_user_msg(@Url String url, @Query("token") String toekn);

    //修改取款密码
    @POST
    Observable<update_PwdBean> get_update_qkpwd(@Url String url, @Query("token") String toekn,
                                                @Query("oldPwd") String oldPwd,
                                                @Query("newPwd") String newPwd);

    //修改登录密码
    @POST
    Observable<update_PwdBean> get_updat_loginpwd(@Url String url, @Query("token") String toekn,
                                                  @Query("oldPwd") String oldPwd,
                                                  @Query("newPwd") String newPwd);

    //反馈投诉1 充值问题 2提款问题 3其他问题 4提交问题 5我要申诉
    @POST
    Observable<ResIdear> putidear(@Url String url, @Query("token") String toekn,
                                  @Query("type") String type,
                                  @Query("content") String content);


    /**
     * 反馈列表
     * ‘status’: ‘’ //1未回复 2已回复
     * ‘startTime’ : ‘’//开始时间
     * ‘endTime’ : ‘’//结束时间
     */
    @GET
    Observable<ResIdearlist> getidearlist(@Url String url, @Query("token") String toekn,
                                          @Query("status") String status,
                                          @Query("startTime") String startTime,
                                          @Query("endTime") String endTime);

    /**
     * 反馈列表
     * ‘status’: ‘’ //1未回复 2已回复
     * ‘startTime’ : ‘’//开始时间
     * ‘endTime’ : ‘’//结束时间
     */
    @GET
    Observable<ResIdearlists> getidearlists(@Url String url, @Query("token") String toekn,
                                            @Query("id") String id);

    //我的消息
    @GET
    Observable<MsgBoxBean> get_user_messagebox(@Url String url, @Query("token") String toekn,
                                               @Query("page") int page,
                                               @Query("row") int row);

    //即刻注单
    @GET
    Observable<NotecountDetailBean> get_note_count_detai(@Url String url, @Query("token") String toekn,
                                                         @Query("gameId") int gameId,
                                                         @Query("rows") int rows);

    //即刻注单2
    @GET
    Observable<NotecountDetail> get_note_count(@Url String url, @Query("token") String toekn,
                                               @Query("gameId") int gameId,
                                               @Query("rows") int rows);

    //下注详情
    @GET
    Observable<NotecountDetailBean> getbets(@Url String url, @Query("token") String toekn,
                                            @Query("gameId") int gameId,
                                            @Query("date") String rows,
                                            @Query("rows") String page);

    //获取socket地址
    @GET
    Observable<websocktdizhiBena> get_websocket_adress(@Url String url, @Query("token") String toekn);

    //抢红包
    @GET
    Observable<getHongbaoBean> get_hongbao(@Url String url, @Query("token") String toekn, @Query("id") String id);

    //修改昵称
    @POST
    Observable<changeNikeNameBean> change_niocheng(@Url String url, @Query("token") String toekn, @Query("nickname") String nickname);


    //获取socket地址
    @GET
    Observable<AppVersionInfo> get_APP_version(@Url String url);
}

